import { useIntersectionObserver, useIntervalFn } from '@vueuse/core'
import { onBeforeUnmount, ref } from 'vue'

export const useLazyLoad = (callback: () => void) => {
  const target = ref(null)
  const { stop } = useIntersectionObserver(target, ([{ isIntersecting }]) => {
    if (isIntersecting) {
      callback()
      stop()
    }
  })
  return target
}

// count 表示默认值，默认从哪开始倒计时
export const useCountDown = (count: number = 60) => {
  const time = ref(0)
  const { resume, pause } = useIntervalFn(
    () => {
      if (time.value <= 0) {
        return pause()
      }
      time.value--
    },
    1000,
    {
      immediate: false,
    }
  )
  // 组件卸载的时候也清理定时器
  onBeforeUnmount(() => {
    pause()
  })
  // 调用 start 的时候开始倒计时（第一：把 time 改成具体的数值，第二：调用 resume 方法）
  const start = (num?: number) => {
    // 如果传递了 num 就从 num 开始倒计时，否则用默认的时间
    time.value = num || count
    resume()
  }
  return {
    start,
    time,
    resume
  }
}
